package jp.ac.aiit.spg.service;

import java.util.List;

import jp.ac.aiit.spg.common.*;
import jp.ac.aiit.spg.entity.*;
import jp.ac.aiit.spg.web.wbs.SpgTaskTemplete;

public interface SpgService  {

	
	// プロジェクトの操作 
	List<SpgProject> listAllProject();		
	List<SpgProject> listUserProject(int userId);		
	List<SpgProject> listUserProject(int userId, SpgRole role);		
	SpgProject findProject(String projectName);
	SpgProject getProject(int projectId);
	void createProject(String name, String description);
	// updateProject()
	// deleteProject(int projectId)

	
	// ユーザーの操作
	List<SpgUser> listAllUser();
	SpgUser findUser(String userName);
	SpgUser getUser(int userId);
	boolean isValidUser(String name, String password);
	void createUser(String name, String description, String password);
	// updateUser()
	// deleteUser(int userId)

	
	// タスクの操作
	List<SpgTask> listAllProjectTask(int projectId, String[] sortOrder );	
	List<SpgTask> listProjectTasksByAssignStatus(int projectId, SpgAssignStatus assignStatus);		
	List<SpgTask> listUserTasksByAssignStatus(int userId, SpgAssignStatus assignStatus, String[] sortOrder);	
	SpgTask findTask(int projectId, String wbsNumber);
	SpgTask getTask(int taskId);
	SpgTask getRootTask(int projectId);
	void createTask(SpgTaskTemplete stt);						
	void updateTask(int taskId, SpgTaskTemplete stt);
	void updateTask(SpgTask task);
	void deleteTask(int taskId);
	void assignTask(int taskId, int memberId);
	void acceptTask(int taskId);
	void rejectTask(int taskId, String assignMemo);
	void updateTaskProgress(int taskId, SpgProgressStatus progressStatus);
	void reCalcWbsNumber(int projectId);

	
	// メンバーの操作
	List<SpgMember> listAllMember(int projectId);
	SpgMember addMember(int projectId, int userId, SpgRole role);
	// removeMember
	
	
	// Dao機能検証用
	List<SpgTask> listProjectTasksByMember(int projectId, int memberId);
	List<SpgTask> listProjectTasksByMemberAndAssignStatus(int projectId, int memberId, SpgAssignStatus assignStatus);

	//ToDoの操作
	SpgToDo getToDoByUserId(int userId);
	void updateToDo(List<SpgTask> tasks);
	
	
}
